// 
//  DummyWindow.cs
//  
//  Author:
//       Nikita Tsukanov <keks9n@gmail.com>
// 
//  Copyright (c) 2011 Nikita Tsukanov
// 
//  This program is free software; you can redistribute it and/or modify
//  it under the terms of the GNU General Public License as published by
//  the Free Software Foundation; either version 2 of the License, or
//  (at your option) any later version.
// 
//  This program is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//  GNU General Public License for more details.
//  
//  You should have received a copy of the GNU General Public License
//  along with this program; if not, write to the Free Software
//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// 


using System;
namespace SkypeTab
{
	public class DummyWindow:IDisposable
	{
		System.Diagnostics.Process m_Proc;
		IntPtr m_Win;
		
		public DummyWindow (string Display)
		{
			string Path=System.Configuration.ConfigurationManager.AppSettings["dummypath"];
			if(Path==null)
			{
				Path=System.Reflection.Assembly.GetExecutingAssembly()
					.GetModules()[0].FullyQualifiedName;
				Path=System.IO.Path.GetDirectoryName(Path);
				Path=System.IO.Path.Combine(Path,"dummy");
			}
			if(!System.IO.File.Exists(Path))
				throw new Exception("Dummy-window executable not found");
			var nfo=new System.Diagnostics.ProcessStartInfo(Path);
			nfo.UseShellExecute=false;
			nfo.RedirectStandardOutput=true;
			if(nfo.EnvironmentVariables.ContainsKey("DISPLAY"))
				nfo.EnvironmentVariables.Remove("DISPLAY");
			nfo.EnvironmentVariables.Add("DISPLAY", Display);
			m_Proc=System.Diagnostics.Process.Start(nfo);
			m_Win=new IntPtr(long.Parse(m_Proc.StandardOutput.ReadLine()));

		}
		public IntPtr Handle
		{
			get
			{
				return m_Win;
			}
		}

		#region IDisposable implementation
		public void Dispose ()
		{
			if (m_Proc!=null)
			{
				try
				{
					m_Proc.Kill();
					
				}
				catch
				{
				}
				m_Proc=null;
				
			}
		}
		#endregion
		
		~DummyWindow()
		{
			Dispose();
		}
		
	}
}

